system and a method for programming an industrial robot

ABSTRACT

The present invention relates to a system and a method for programming an industrial robot ( 3 ) to perform work in a robot cell including a plurality of workstations ( 4   a - c ). The method comprises:
         a first memory location for storing a plurality of programming blocks including robot code comprising program instructions for the robot to carrying out a part of a task, and at least some of the programming blocks comprises program code including program instructions for generating a graphical user interface for guiding a user to program the part of the task,   a graphical generator configured to generate a first wizard including a first graphical user interface allowing a user to define a plurality of workstations, to select a sequence of said programming blocks for each of the defined workstations, and to define a specific robot cell including one or more of said defined workstations, and   a programming tool generator configured to generate a guiding tool for programming the specific robot cell based on the program code of the selected sequences of programming blocks for the workstations in the robot cell, wherein the guiding tool comprises program code for generating a second wizard having a second graphical user interface comprising a sequence of views including instructions for guiding a user to program the specific robot cell, and allowing the user to select one or more of the workstations in the specific robot cell, and to input parameters in response to the displayed instructions.

FIELD OF THE INVENTION

The present invention relates to a system and a method for programmingan industrial robot to perform work in a robot cell including aplurality of workstations.

BACKGROUND OF THE INVENTION

In many factories the manufacture takes place at different workstations.Robots performing tasks at the workstations can be used in order toincrease the productivity. The robot can perform operations, such aswelding, gluing, painting, grinding, picking, and assembly at theworkstations.

Robots are usually placed in robot cells in order to facilitate theautomation of complex series of actions. The robot cell may comprise anumber of different workstations and the robot can be programmed toperform different tasks at the different workstations. A workstationmay, for example, contain a machine, such as an injection moldingmachine, a die casting machine, a sheet metal machine and a CNC machine.Other examples of workstations are scrap stations for throwing awayrejected objects, devices for vision control of objects, stations forsubsequent treatment of the objects, and input and output stations suchas conveyors, input pallets or output pallets.

Before an industrial robot is put into operation for a certain task, itmust be programmed to carry out the task. The robot programmer must, forexample, program the order in which the robot shall visit theworkstations, program how the I/O signals are to be used to interactwith the workstations, how the tool is to be operated at the station,and program all of the robot paths to be used. Programming of a robotcell can be very complex. Traditional robot programming requires thesignificant robot knowledge in general and knowledge of the specificrobot manufacturers' robot code as well. When programming an industrialrobot, a robot language is used. Typical robot programming languagesinclude instructions for robot motion, handling input and outputsignals, program comments, and handling program flow. Each industrialrobot manufacturer has its own robot programming language. The robotprogram comprises a series of instructions written in a robotprogramming languages where each instruction tells the robot controllerwhat to do and how to do it. The use of a programming language offersthe advantage of great flexibility, but also requires that the person,who is programming the robot, has knowledge about robot programming and,in particular, about robot languages of different robots. However, inthe industry it is not always possible to have operators with knowledgeabout robot programming. Thus, there is a desire to make it possible foroperators without any knowledge about programming language to programthe robot in a simple and intuitive way.

Today there exist some robot programming wizards, which lead theoperators through the questions and allows a user to give input giveinput in terms of parameters and teaching paths in response to thequestions. Wizards are based on static programs where the wizards is auser interface layer on top of the robot program. This means that eachwizard is custom-built for the application, e.g. for palletizing orpress brakes.

WO/2006/043873 discloses a system and a method for programming anindustrial robot to perform a work cycle including visiting andperforming work on a plurality of workstations. A set of predefinedworkstations comprising preprogrammed robot code for controlling therobot so that it carries out a defined task at the workstation, and awizard providing a graphical interface for guiding the user during theprogramming of the workstation is created in advance. The preprogrammedrobot code comprises predefined movement paths for the robot forcarrying out the task at the workstation. The movement path, which therobot shall follow during the task, is defined by a sequence ofway-points, in the following denoted targets. During programming of therobot, the wizard displays information about the predefinedworkstations, and allows a user to select one or more of the predefinedworkstations and to specify the order in which the robot shall visit theselected workstations. The wizard makes it possible for the programmerconfigure the settings of the workstation and to change the positions ofthe targets of the predefined movement path. The programming code ishidden from the user, and the user creates a robot program byinteracting with the graphical interface of the wizard. A robot programgenerator generates a robot program for performing the work cycle basedon the predefined workstations and the user inputs. The method andsystem described in WO/2006/043873 makes it possible for a user tocreate a robot program for a robot cell without using any programmingcode. However, the workstations has to be defined in advance and robotcode for each of the workstations has be created in advance, which istime consuming. It also takes time and effort to create the wizard.Further, if any of the workstations has to be amended, or a newworkstation is to be added, it time consuming to adjust the wizard.Another problem is that different customer has different sets ofworkstations. Thus, it is a desire to customize the wizard to a customeror a robot cell.

EP2 129 498B1 discloses a method and an apparatus for programming anindustrial robot working in a robot cell including one or moreworkstations. The apparatus comprises a memory location for storingpreprogrammed robot code comprising program instructions whereaccommodations for optional parameters are made, and for storing atleast one predefined workstation having a plurality of differentscenarios, each scenario including a set of parameters defining how therobot will perform work on the workstation, a graphical display andinput device adapted to present a graphical user interface displaying agraphical object representing the workstation, displaying informationabout the scenarios together with the graphical object representing theworkstation, and allowing the user to select one of the scenariosassociated with the workstation, and a robot program generator adaptedto generate a robot program based on user selected scenarios and thepreprogrammed robot code. Each scenario contains a sequence of one ormore default actions having default parameters related to how the actionis to be carried out. This makes it possible to beforehand define andcreate program code for a plurality of possible scenarios for theworkstations and allows a programmer to select among the predefinedscenarios. The scenarios are displayed together with a graphical objectrepresenting the workstation, thereby facilitating the programming forthe operator. A disadvantage with this method is that the selectablescenarios are given beforehand, and accordingly the flexibility of theprogramming of the workstations is reduced.

Thus, designing a tool for guiding through programming of an industrialrobot is a tradeoff between flexibility and simplicity of theprogramming.

In small and medium-sized enterprise, a system designer with a certainknowledge of robot programming is used to set up and program the robotin the robot cell. However, when a new product is to be produced, orthere are other minor changes to the production, the system designer hasto come back and reprogram the robot. This can be costly, in particular,if small batches are produced. It is desired that an end user, withoutany knowledge of robot programming, can reprogram the robot in a simpleway.

OBJECT AND SUMMARY OF THE INVENTION

It is an object of the present invention to at least partly overcome theabove mentioned problems, and to provide a programming tool thatprovides flexibility as well as simplicity for the user.

According to a first aspect of the invention, this object is achieved bya programming system as defined in claim 1.

The system comprises a first memory location for storing a plurality ofprogramming blocks, wherein each of the programing blocks includes robotcode comprising program instructions for the robot to carrying out apart of a task, and at least some of the programming blocks comprisesprogram code including program instructions for generating a graphicaluser interface for guiding a user to program the part of the task,

-   -   a graphical generator configured to generate a first wizard        including a first graphical user interface allowing a user to        define a plurality of workstations, to select a sequence of said        programming blocks for each of the defined workstations, and to        define a specific robot cell including one or more of said        defined workstations, and    -   a programming tool generator configured to generate a guiding        tool for programming said specific robot cell based on the        program code in the selected sequences of programming blocks for        the workstations in the specific robot cell, wherein the guiding        tool comprises program code for generating a second wizard        having a second graphical user interface comprising a sequence        of views including instructions for guiding a user to program        the specific robot cell and allowing the user to select one or        more of the workstations in the specific robot cell, and to        input parameters in response to the displayed instructions.

The system according to the invention makes it possible to carry out theprogramming into two parts. In the first part of the programming, theuser sets up the robot cell, including the workstations inside the robotcell. The first part requires special knowledge about how to program atask at a workstation. This part must be carried out by a systemintegrator. The first part can be carried out at any computer unit, andat remote location. In the second part, the user defines detailsregarding task the robot shall carry out at each of the workstations.This part does not require any special knowledge about programming ofthe workstations. The second part can be carried out at the robot cell,for example, using a portable programming unit connected to the robot.

The first wizard includes a first graphical user interface comprising asequence of views with instructions for guiding a first user to defineworkstations in a specific robot cell. The second wizard includes asecond graphical user interface comprising a sequence of views withinstructions for guiding a second user to program the specific robotcell. The first user can be a system integrator and the second user canbe a robot operator.

In the first part of the programming, the user sets up a specific robotcell by defining the workstations needed in the robot cell. The robotcell including the defined workstations corresponds to a real robot cellat site including real workstations. According to the invention, aplurality of programming blocks for carrying out a part of a task areprovided. Each of the programming blocks comprises preprogrammed robotcode for carrying out a part of a task. The sequence of the blocksdefines the logic of the workstation and the robot in cooperation witheach other. A least some of the programming blocks also include programcode for generating a graphical user interface for guiding a user toprogram the part of the task. For example, the graphical user interfaceenables a user to input or adjust parameters needed for carrying out thepart of the task. All of the programming blocks may include program codefor generating a graphical user interface for guiding a user to programthe part of the task. The first wizard guides the user to define theworkstations needed in the specific robot cell by enabling the user toselect a sequence of programming blocks for each of the defined workstations. The system enables a user to define a workstation and todetermine a task to be carried out by the robot at the workstation byselecting a sequence of programming blocks for the defined workstation.The selected sequence of programming blocks determines the order ofexecution of the parts of the task so that they together carry out thedesired task at the workstation. Thus, the system enables the user todefine a specific robot cell including one or more of said definedworkstations. By executing the robot code in the selected programmingblocks in accordance with the determined sequence, the robot willperform the determined task.

With robot code is meant code which can be executed by a robot or robotcontroller. With program code is meant code which can be executed on anytype of computer.

However, the robot code is not complete, there are parameters that needvalues. For example, positions on movement paths for the robot at theworkstations need to be programmed on site. According to the invention,a guiding tool for guiding a user to input the parameters needed for theworkstations in the robot cell is automatically generated based on theprogram code in the selected sequences of programming blocks. Thesequence of views generated when the guiding tool is executed,constitutes a second wizard for guiding the user to input the parametersneeded for completing the programming of the robot in the robot cell.The guiding tool depends on the selected programming blocks and theselected order of the programming blocks. Thus, the guiding tool isadapted to the specific robot cell. If the system integrator changes theorder of the programming block or selects other programming blocks, theprogram code of the guiding tool will differ, and thus the second wizardwill include a different sequence of views and include differentinstructions for guiding the user to program the robot cell. The secondwizard is simple and self-instructing. The second wizard generated bythe guiding tool helps the user to input the parameters needed forcompleting the programming of the robot. The guiding tool is executed ona local computer close to the robot in the robot cell. The second partis preferably carried out by the robot operator at site.

The operator's job is just to define the details of the task to becarried out by the robot at each of the workstation. This is done byfollowing the second wizard generated by the guiding tool, e.g. how topick up an object from an input palette, and fine adjustments of how toinsert an object into a machine. This gives the operator the freedom tospecify paths and points at each station for different types of parts tocreate different types of products.

The second wizard acts as a guide for the operator by explaining all thesteps in the process of creating a program for a product. The operatoronly needs to know what sequence of workstations is needed to create theproduct. By following the instructions in the second wizard, theoperator teaches the robot by moving the robot and saving points, or bymoving a physical part around during the teaching, which at the end ofteaching will become the final product.

When the operator has gone through all the views in the guiding tool,the robot program generator generates a robot program based on the robotcode of the selected sequences of programming blocks for the selectedworkstations and the received parameters. Suitably, robot code includesaccommodations for optional parameters. The robot program generator thenfills in the values for the parameters in the accommodations in therobot code during the generation of the robot program.

The system according to the invention makes it possible for theintegrator to design a guiding tool for guiding the operator at site howto adapt the robot program to a certain application in the specificrobot cell. The guiding tool is adapted to the specific robot cell andcan be reused when there is a need to reprogram the specific robot cell,for example, when a new type of product is to be produced. As long asthe workstations are the same in the robot cell, the same guiding toolcan be used. By using the guiding tool, reprogramming of the robot cellis simple and can be done very quickly by the operator. Typically,reprogramming will take 10-20 minutes. The robot operator at site can dothe programming, and no system integrator is needed.

The invention enables smaller batch sizes, higher flexibility, andsimplified integration.

According to an embodiment of the invention, the system comprises asecond memory location for storing the defined workstations and theselected sequences of programming blocks, a program executer configuredto execute the guiding tool and to display the second wizard, and arobot program generator configured to generate a robot program based onthe robot code of the selected sequences of programming blocks for theselected workstations, and the parameters input in response to thedisplayed instructions.

According to an embodiment of the invention, said sequence of views alsoincludes questions regarding the workstations in the specific robotcell, and the program code of at least some of the programming blocks isinteractive and configured to adjust said sequence of views depending onuser input in response to the displayed questions. Thus, the secondgraphical user interface is dynamic and changes depending on the userinput.

According to an embodiment of the invention, the parameters includewaypoints on movement paths for the robot. During teaching of the robot,the user determines the actual positions on the movement paths for therobot at the workstations. Existing practice for programming a robotinvolves teaching the robot a sequence of waypoints. The waypointsdefine the movement path, which the robot shall follow during executionof the robot program. A waypoint comprises three-dimensional positionand three-dimensional orientation information. The robot is taught howto perform the task by being guided through the various waypoints alongthe desired operating path during the programming.

According to an embodiment of the invention, the first graphical userinterface allows a user to define an entry point for each of theworkstations and to specify first movement paths for the robot betweenthe defined entry points, and the robot program generator is configuredto generate the robot program based on the first movement paths. In thisembodiment, the first graphical user interface includes a sequence ofviews with instructions for guiding the first user to program movementpaths between the defined workstations in the specific robot cell. Thefirst user programs all the movement paths between the workstationwithin the robot cell. The paths need to be safe in order to avoidcollisions. The integrators job is to program all the safe paths betweenthe stations within the robot cell.

According to an embodiment of the invention, the second graphical userinterface allows a user to specify second movement paths for the robotfrom the entry points for carrying out the tasks at the selectedworkstations, and the robot program generator is configured to generatethe robot program based on the specified second movement paths. In thisembodiment, the second graphical user interface includes a sequence ofviews with instructions for guiding the second user to program movementpaths for carrying out the tasks at the selected workstations.Preferably, the robot program generator is configured to generate therobot program based on the specified first and second movement paths.The second user only needs to program the paths at the workstations,which depends on the properties of the object that is to be processed atthe workstation, and which may vary depending on the application and theproduct being produced.

According to an embodiment of the invention, the program code forgenerating a graphical user interface comprises accommodations foroptional text to be presented to the user, and the first graphicalinterface is configured to allow a user to input text with instructionsand questions to the user, and said programming tool generator isconfigured to fill in the text received from the user in saidaccommodations. This embodiment allows the integrator to input text withinstructions and questions to the operator in the first part of theprogramming. The text input by the integrator is included in thesequence of views generated by the guiding tool and displayed to theoperator during the second part of the programming. The operator answersthe questions and carries out actions in respond to the text. Thegeneration of the robot programming depends on the user response to thequestions and instructions. This embodiment allows the integrator toinclude text with instructions and questions to the operator, which areadapted to the specific robot cell. The guiding tool for the specificrobot cell will then include the instructions and questions for therobot cell.

According to an embodiment of the invention, the first graphical userinterface allows a user to specify the actual positions of theworkstations in the specific robot cell.

According to an embodiment of the invention, the second graphical userinterface allows the user to specify the order in which the robot isgoing to visit the workstations, and the robot program generator isconfigured to generate the robot program based on the specified orderfor visiting the workstations. This embodiment enables the operator tochange the order in which the robot is visiting the workstations. Thus,the same guiding tool can be used for reprogramming the sequence ofvisiting the workstations by the robot. There is no need to involve theintegrator for reprogramming the robot when the order is changed.

According to an embodiment of the invention, the system comprises afirst computing unit including a first display device, user input means,and said programming tool generator, and said graphical generator isconfigured to display the first graphical user interface on the firstdisplay device, and a second computing unit configured to receive thegenerated guiding tool, and comprising a memory location for storing theguiding tool, a second display device, user input means, a programexecuter configured to execute the guiding tool to display the secondgraphical user interface on the second display device, and said robotprogram generator. In this embodiment, the first part of the programmingis carried out at the first computing unit and the second part iscarried out at the second computing unit. The guiding tool and the robotcode for the selected sequences of programming blocks for theworkstations of the specific robot cell must then be transferred to thesecond computing unit. This transfer can be done in many different ways.

The first computing unit can be any type of computer, for example, apersonal computer PC. Preferably, the second computing unit is portablecontrol unit connected to the robot and adapted for providing manualcontrol of the robot. The portable control unit is defined as a devicefor jogging and programming the robot. The portable control unit can,for example, be a traditional teach pendant unit (TPU). A TPU includesoperator control means, for example, a joystick, a ball, or a set ofbuttons, which the operator uses to instruct the robot movement. Theportable control unit can also be a general purpose device, such as asmart phone or a tablet computer, adapted to communicate with the robotcontroller used together with a separate joystick. By following theinstructions in the generated guide the operator steers the robot withthe joystick and saves waypoints.

According to a second aspect of the invention, this object is achievedby a computer based method for programming an industrial robot asdefined in claim 9.

The method comprises:

-   -   providing a plurality of programming blocks, each of the        programming blocks including robot code comprising program        instructions for the robot to carry out a part of a task, and at        least some of the programming blocks include program code        comprising program instructions for generating a graphical user        interface for guiding a user to program the part of the task,    -   generating a first wizard including a first graphical user        interface allowing a user to define a plurality of workstations        and to select a sequence of said programming blocks for each of        the defined workstations, and to define at least one specific        robot cell including one or more of said defined workstations,    -   receiving user inputs regarding selected sequences of said        programming blocks for the defined workstations,    -   storing the defined workstations of the specific robot cell, and    -   generating a guiding tool for programming said at least one        specific robot cell based on the defined workstations, and the        program code comprising program instructions for generating a        graphical user interface in the selected sequences of        programming blocks for the defined workstations, wherein the        guiding tool includes program code for generating a second        wizard comprising a graphical user interface including a        sequence of views including instructions for guiding a user to        program the specific robot cell.

The guiding tool is generated by combining the program code comprisingprogram instructions for generating a graphical user interface in theselected programming blocks. Preferably, the program code is combined sothat the combined program code reflects the sequence of the programmingblocks for the work stations. Thus, the programming sequence becomescorrect and logical for the programmer.

According to an embodiment of the invention, the method furthercomprises:

-   -   executing the guiding tool,    -   displaying the second graphical user interface allowing the user        to select one or more of the workstations in the specific robot        cell, and to input parameters in response to the displayed        instructions,    -   receiving user inputs in response to the displayed instructions,        and    -   generating a robot program based on the robot code of the        selected sequences of programming blocks for the selected        workstations, and the received user inputs.

According to an embodiment of the invention, the method comprisesgenerating a graphical user interface including instructions for guidinga user to program the work station for each of the defined workstationsbased on the program code in the selected programming blocks, andgenerating said guiding tool based on the generated graphical userinterfaces for the defined workstations of the specific robot cell.

According to an embodiment of the invention, the first graphical userinterface is generated on a first programming unit, the second userinterface is generated on a second computing unit, the guiding tool isgenerated on the first programming unit and the robot program isgenerated on the second programming unit, and the method comprisestransferring the guiding tool and the robot code of the selectedsequences of programming blocks for the workstations of the specificrobot cell from the first computing unit to the second programming unit.

According to an embodiment of the invention, the first graphical userinterface allows a user to define an entry point for each of theworkstations and to specify first movement paths for the robot betweenthe defined entry points, the second graphical user interface allows auser to specify second movement paths for the robot from the entrypoints for carrying out the tasks at the selected workstations, and themethod comprises receiving first movement paths from a first user,receiving second movement paths from a second user, and generating therobot program based on the first and second movement paths.

According to an embodiment of the invention, said sequence of viewsincludes questions regarding the workstations in the specific robotcell, and the method comprises displaying the views with the questions,receiving response to the displayed questions, and adjusting the seconduser interface in depending on the response to the displayed questions.

It is easy to realize that the method according to the invention, asdefined in the appended set of method claims, is suitable for executionby a computer program having instructions corresponding to the steps inthe inventive method when running on a processor unit. Even though notexplicitly expressed in the claims, the invention covers a computerprogram product in combination with the method according to the appendedmethod claims.

According to a further aspect of the invention, the object is achievedby a computer program directly loadable into the internal memory of thecomputer or a processor, comprising software code portions forperforming the steps of the method according to the invention, when saidprogram is running on a computer. The computer program product isprovided either on a computer readable medium or through a network, suchas the Internet.

According to another aspect of the invention, the object is achieved bya computer readable medium having a program recorded thereon, when theprogram is to make a computer perform the steps of the method accordingto the invention, and said program is running on the computer.

BRIEF DESCRIPTION OF THE DRAWINGS

The invention will now be explained more closely by the description ofdifferent embodiments of the invention and with reference to theappended FIGS..

FIG. 1 shows an example of a first and a second computing unit forprogramming an industrial robot to carry out work in a robot cellincluding a plurality of workstations.

FIG. 2 shows a schematically an example of a system for programming anindustrial robot according to the invention.

FIG. 3 illustrates an example of a sequence of programming blocks for adefined workstation.

FIG. 4 shows a flowchart for an example of a first part of a method forprogramming an industrial robot according to the invention.

FIG. 5 shows a flowchart for an example of a second part of a method forprogramming an industrial robot according to the invention.

FIGS. 6a-b show an example of a view in a first graphical user interfacefor programming the robot.

FIGS. 7a-h show an examples of a sequence of views in a second graphicaluser interface for programming the robot.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS OF THE INVENTION

According to the invention, the programming of an industrial robot issplit up into a first and a second part, which can be carried out by twodifferent users with different programming skills. In one embodiment ofthe invention, the system comprises a first computing unit configured toexecute a first programming part and a second computing unit configuredto execute a second programming part. However, it is also possible toexecute both programming parts on the same computing unit.

FIG. 1 shows an example of a first and a second computing unit 1, 2 forprogramming an industrial robot 3 to carry out work in a robot cellincluding a plurality of workstations. The robot cell includes a robot 3and a plurality of workstations 4 a-c. The industrial robot includes arobot controller 5 for controlling the motions of the robot 3. In thisexample, the workstations are an input pallet 4 a for not yet machinedobjects, a machine 4 b for machining the objects, and an output pallet 4c for finished objects. The first computing unit 1 includes a firstdisplay device 6 a, such as a computer screen, and first user inputmeans 7 a, for example a keyboard and a computer mouse, to enable a userto input data and interact with the computing unit 1. The firstprogramming unit is, for example, a PC, a tablet computer, or any othersuitable computer unit. The second computing unit 2 includes a seconddisplay device 6 b, for example, a screen such as a touch screen, andsecond user input means 7 b, such as a touch screen, and/or buttons, toenable a user to input data and interact with the second computing unit2. The second computing unit 2 may also include a joystick 8 for joggingthe robot. The first and second computing unit include data processingmeans, such as such as a central processing unit (CPU) and memory means,such as ROM and RAM.

An industrial robot typically comprises a mechanical unit, in thefollowing called a robot 3, movable about a plurality of axes, a robotcontroller 5 configured to control the motions of the robot, and aportable control unit 2 having a user interface adapted to communicatewith the robot controller and to enable programming of the motions ofthe manipulator. The portable control unit is generally denoted a TeachPendant Unit (TPU). A TPU includes operator control means, for example,a joystick, a ball, or a set of buttons, which the operator uses toinstruct the robot movement. The TPU further comprises an enablingdevice, for example, a dead man's switch or a push button, which has tobe pressed by the operator to enable manual control of the robot by theTPU. In this embodiment, the second programming unit 2 is the TPU of therobot. However, in another embodiment, the second programming unit 2 canbe a general-purpose device, such as PC or a tablet computer, adapted tocommunicate with the robot controller. If a general-purpose device isused as the second computing unit, the general-purpose device isprovided with one or more software modules adapted to configure theexisting user interface of the device to enable a user to input joginstructions to the device, and to generate and send jog commands to therobot controller in response to user interactions with the userinterface. The second computing unit 2 may include a graphical userinterface enabling a user to jog the robot and teach the robot movementpaths. In another embodiment, a separate joystick can be used forjogging the robot during teaching of the movement paths.

FIG. 2 shows schematically an example of a system for programming anindustrial robot according to the invention. In this example, the systemcomprises the first computing unit 1 and the second computing unit 2.However, in another embodiment it is possible to have only one computingunit. An advantage with using two computing units is that they can bearranged at different locations. This means that the system integratorcan carry out the first part of the programming at a remote location.The second part of the programming has to be done in the robot cell.

The system comprises a first memory location 10 for storing a pluralityof programming blocks, each of the programming blocks includes robotcode comprising program instructions for the robot to carry out a partof a task and program code comprising program instructions forgenerating a graphical user interface for guiding a user to program thepart of the task. The robot code is written in a robot programminglanguages, i.e. a programming language especially designed forprogramming industrial robots. The robot code includes a sequence ofprogram instructions written in a robot programming language, where eachinstruction tells the robot controller what to do and how to do it. Therobot code is executed by the robot controller 5. The program codecomprises program instructions for generating a graphical user interfaceand can be written in any known programming language for generating agraphical user interface, for example, C-sharp. The program code in theprogramming blocks can be compiled code. Preferably, each of theprogramming blocks comprises program code for generating a graphicaluser interface for guiding. However, it is possible to have programmingblocks, which only include robot code.

The system further comprises a first graphical generator 12 configuredto generate a first wizard including a first graphical user interfaceallowing a user to define a plurality of workstations and to select asequence of the programming blocks for each of the defined workstations,and to define a specific robot cell including one or more of the definedworkstations. The system comprises a first display device 6 b, and thefirst graphical generator 12 is configured to display the firstgraphical user interface of the first wizard on the first displaydevice. The system enables a user to define workstations correspondingto the real workstations in the robot cell. The user can determine atask for the robot to be carried out at the workstation by selecting asequence of the programming blocks for each of the defined workstations.The selected sequence of programming blocks determines the order ofexecution of the task parts so that they together carry out the desiredtask at the workstation. By executing the robot code in the selectedprogramming blocks in accordance to the selected sequence, the robotwill perform the desired task. For example, the task “pick object frominput palette” can be programmed by selecting the task parts “Approachthe palette”+“Pick from stack”+“Retract”.

FIG. 3 shows an example of a sequence of programming blocks 14 a-cselected for a workstation “Input palette”. Each of the programmingblocks includes robot code 15 for carrying out one of the task parts“Approach the palette”, “Pick from stack”, and “Retract”, and programcode 16 for generating a graphical user interface (GUI) for guiding auser to program the task part. The order of the programming blocksdetermines the order of execution of the task parts and also the orderin which the GUIs are to be displayed to the user during the second partof the programming.

The system comprises a second memory location 18 for storing the definedworkstations and the selected sequences of programming blocks. Thesystem may comprise a library of defined workstations. When a newworkstation has been defined, it can be stored in the library and can beused later for defining other robot cells. The user can choose to definea new workstation or to use a previously defined workstation from thelibrary.

The first graphical user interface may be designed to allow the user tospecify the actual positions of the workstations in the specific robotcell. In one embodiment of the invention, the first graphical userinterface allows a user to define an entry point for each of theworkstations and to specify first movement paths for the robot betweenthe defined entry points. An entry point is a point defined in thevicinity of the workstations, preferably close to the entrance ofworkstation, and suitable for the robot to pass through upon enteringthe workstation. This embodiment enables the user to input the actualpositions of the entry points and defines safe movement paths for therobot between the entry points to the workstations.

The program code for generating the first graphical user interface maycomprise accommodations for optional text to be presented to theoperator during the second part of the programming, and the firstgraphical interface is configured to allow the integrator to input textwith instructions and questions to the operator. The programming toolgenerator is configured to fill in the text received from the user insaid accommodations.

The system further comprises a programming tool generator 20 configuredto generate a guiding tool 22 for programming a specific robot cellbased on the program code in the selected sequences of programmingblocks for the workstations in the specific robot cell. The guiding tool22 includes program code for generating a second wizard including asecond graphical user interface for guiding a user to program thespecific robot cell. When the user has defined all the workstations inthe robot cell, the guiding tool 22 can be generated. The programmingtool generator 20 collects the program code from the programming blocksof the workstation according to the selected order of the programmingblocks and put them together to a program file including program codefor generating a second graphical user interface, also denoted thesecond wizard, including a sequence of views including instructions forguiding a user to program each of the workstations of the robot cell.The second wizard allows the user to select one or more of theworkstations in the specific robot cell and to input parameters inresponse to the displayed instructions.

In this embodiment, the programming tool generator 20 and the firstgraphical generator 12 are software modules stored at the firstcomputing unit and executed by the first computing unit.

The programming tool generator 20 is also configured to generate a robotprogram file including robot code for programming the workstations basedon the robot code in the selected sequences of programming blocks. Theprogramming tool generator 20 collects the robot code from theprogramming blocks of the workstation according to the selected order ofthe programming blocks, and put them together to a robot program fileincluding robot code for each of the workstations. If the user hasspecified movement paths between the workstations, the programming toolgenerator 20 is also configured to generate the robot program file basedon the specified movement paths. The guiding tool 22 may comprise therobot program file including robot code for each of the workstations aswell as the program file including program code for generating thesecond graphical user interface.

The guiding tool and the robot code for the selected sequences ofprogramming blocks for the workstations of the specific robot cell canbe transferred to a second computing unit 2. The guiding tool and therobot code is, for example, transferred in the form of a XML-file 22.This transfer can be done in many different ways. For example, the firstcomputing unit 1 can be configured to transfer the guiding tool and therobot code to the second computing unit 2. Alternatively, the guidingtool and the robot code are manually transferred via an USB unit orelectronically via an e-mail.

The system also comprises a program executer 24 configured to executethe guiding tool and to display the second graphical user interface. Inthis example, the program executor is located at the second computingunit 2 and the second part of the programming is carried out at thesecond computing unit 2. The second computing unit 2 is configured toreceive the guiding tool and the robot program file including robot codefor the workstations from the first computing unit, and includes amemory location 26 for storing the guiding tool and the robot code. Inthis example, the program executer 24 is configured to display thesecond graphical user interface on the second display device 6 b.

The second user interface is designed to allow a user to select one ormore of the defined workstations for the robot cell. The second userinterface is designed to step by step display questions and instructionsto the user for each of the selected workstations, and to allow the userto input parameters and make choices in response to the displayedinstructions and questions. In this example, the second graphical userinterface allows a user to select the order the robot is going to visitthe workstations. For example, the robot shall first visit the inputpallet 4 a, then visit the machine 4 b, and at last visit the outputpallet 4 c. The second graphical user interface allows a user to specifymovement paths for the robot for carrying out the tasks at the selectedworkstations. This is, for example, done teaching the robot a pluralityof waypoints on the movement paths. In this case, the parameters are thepositions and orientations of the waypoints.

The system also comprises a robot program generator 28 configured togenerate a robot program based on the robot code of the selectedsequences of programming blocks for the selected workstations, and thereceived parameters. The program generator 28 fills in the parameters inthe robot code for the selected workstations, and merges the robot codefrom the selected workstations in dependence on the selected order forthe robot to visit the workstations. The file 30 with the robot programis suitably transferred to the robot controller for execution.

FIG. 4 shows a flowchart illustration for a first part of a method forprogramming an industrial robot to perform work in a robot cellincluding a plurality of workstations according to an embodiment of theinvention. It will be understood that each block of the flow chart canbe implemented by computer program instructions. The first part of themethod can be executed on a first computing unit. The first part of themethod can be carried out by a first user, for example, a systemintegrator.

A plurality of programming blocks has been defined and stored inadvance. Each of the programming blocks includes robot code for therobot to carrying out a part of a task. At least some of the programmingblocks also include program code for generating a graphical userinterface for guiding a user to program the part of the task.

In a first step, a first graphical user interface is generated anddisplayed to the first user, block 20. The first graphical userinterface is a sequence of views for guiding the user to define theworkstations in the robot cell. FIGS. 6a and 6b show an example of aview in a first graphical user interface shown to the user. The views inthe first graphical user interface show the defined programming blocksfor the parts of the tasks, and allow the user to define a plurality ofworkstations and to select a sequence of programming blocks for each ofthe defined workstations. The next step in the method is to step throughthe sequence of views and to receive user inputs, such as the selectedprogramming blocks, in response to the displayed views, block 22. Thefirst user may also input text with questions and instructions to thesecond user regarding how to program the task parts. The first userselects programming blocks and enters text for a workstation until thelast programming block has been selected for the workstation, block 24.When the workstation has been defined, the workstation is stored.Programming code for the defined workstation is generated based on therobot code for the selected sequence of programming blocks, block 26. Agraphical user interface for guiding the second user to program thedefined workstation is generated based on the selected sequence ofprogramming blocks and the text with instructions and questions input bythe first user, block 26. In this step, the text with instructions andquestions received from the user is filled in the accommodations of theprogram code. In another embodiment, step 26 can be carried out later,for example, after the last station has been defined or when the guidingtool is generated. Steps 22-26 are repeated until all of theworkstations in the robot cell have been defined and stored, block 28.

In a next step, the first user may input positions of entry points tothe workstations and waypoints on movement paths between the entrypoints. The positions of entry points to the workstations and waypointson movement paths are received and stored, block 30. When the user hasdefined the workstations in the robot cell and input paths between theworkstations, a guiding tool for programming the robot cell isgenerated, block 32. In this embodiment, the guiding tool is generatedbased on the graphical user interfaces for the defined workstations forthe robot cell. In an alternative embodiment, the guiding tool forprogramming is generated cell based on the program code in the selectedsequences of programming blocks for the workstations of the robot celland the text input by the user. The guiding tool can be transferred to asecond computing unit.

The implementation of the steps 20-34 are preferably made by a computingunit comprising software code portions, such as a computer program,comprising instructions for carrying out the steps of the method, andhardware, such as a processor, memory and input/output devices, forcarrying out the instructions of the computer program.

FIG. 5 shows a flowchart illustration for a second part of a method forprogramming an industrial robot according to an embodiment of theinvention. It will be understood that each block of the flow chart canbe implemented by computer program instructions. The second part of themethod can be executed on the same computing unit as the first part ofthe method, or on a second computing unit. The second part of the methodis suitably carried out by a second user, for example, a robot operatorin the robot cell.

If the second part has been performed on another computer, the guidingtool is received by the second computer, block 40. The guiding tool isexecuted, block 42. When the guiding tool is executed, a secondgraphical user interface including a sequence of views includinginstructions for guiding a user to program the robot cell is displayed,block 44. The second graphical user interface allows the user to selectone or more of the workstations in the robot cell, block 46. When theuser has selected one of the workstations, the user interface for theselected workstation is displayed to the user. The user steps throughthe views in the user interface for the selected workstation and inputparameters and in response to the displayed instructions and responds tothe displayed questions, block 48. The user inputs are received. Theuser interface can be changed in dependence on the user choice. Forexample, the number of views displayed may vary in dependence on theuser choice. The user can, for example, teach the robot a movement pathor how to grasp an object at the workstation in response to thedisplayed instructions.

When all the views of the user interface have been stepped through, thenext workstation can be selected, block 50 and 52. When the user selectsa new workstation, the user interface for the selected workstation isdisplayed to the user. The steps 46, 48 and 50 are repeated until thelast workstation has been selected. The user selects the workstations inthe same order in which the robot is going to visit the workstations.The second user specifies the sequence of workstations needed toaccomplish the task, for example, to create a certain product. The usercan select one or more of the defined workstations, and one workstationcan be selected several times. In an alternative embodiment, the userdetermines the order in which the robot is going to visit theworkstations after the last workstation has been defined, i.e. betweenblocks 52 and 54. The user inputs regarding selected order for visitingthe workstations are received.

In a last step, a robot program is generated based on the robot code ofthe selected sequences of programming blocks for the selectedworkstations, the selected order for visiting the workstations, and thereceived parameters, block 54. The robot program is transferred to therobot controller. The implementation of the steps 40-54 are preferablymade by a computing unit comprising software code portions, such as acomputer program, comprising instructions for carrying out the steps ofthe method, and hardware, such as a processor, memory and input/outputdevices, for carrying out the instructions of the computer program.

The programming of the robot cell is split up into two parts, assistedby a first wizard for the integrator and a second wizard for theoperator. The integrators job is to set up the robot cell, including theconfiguration of the workstations inside the robot cell, all the safepaths between all workstations within the robot cell, i.e. from homeposition to the input palette, and the logic behind the second wizard tobe generated. Then the operator's job is just to define the detailsinside each workstation by following the second wizard generated by theintegrator program, i.e. how to pick up an object from the inputpalette, and fine adjustments of inserting the object into the machine.This gives the operator the freedom to specify paths and points at eachstation for different types of parts to create different types ofproducts.

The first wizard is a tool to create a guiding tool, which governs theoperation of the second wizard, i.e. the end-user wizard. It alsocreates a task level programming environment, where the whole process ofprogramming the robot cell is broken down in to tasks (workstations),which are even further broken down to small task parts. Each task parthas a corresponding programming block. The task parts are the smallestunits in the system, where every task part accomplishes a small sectionof a high level task. The task parts have variety of functions, e.g.teaching paths, measuring distances, creating loops, and collectinginformation from the user. Workstations can be created by adding taskparts.

The second graphical user interface acts as a guide for the operator byexplaining all the steps in the process of creating a program for aproduct. The operator only needs to know what sequence of stations areneeded to create the product. The application is meant for the robotsteach pendant (Display and joystick) or other tablet PC's or similartogether with a separate joystick. By following the instructions in thegenerated guide, the operator steers the robot with the joystick andsaves points, teaching as they go and by moving a physical part aroundduring the teaching which at the end of teaching has become the finalproduct.

The first and second graphical user interface are generic and dynamicfor all applications. They changes based on the operators or integratorsinput. Since each step needs to be approved by the operator, the secondwizard also takes safety in account, since the user needs to approveeach step, making the operator aware of the current or coming actions.An execution of some movements will always happen after the operator hasapproved the action. All large movements and paths for the robot arealready set, so this brings safety of robot programming to a new level.The risk of by mistake causing an incorrect robot motion somewhere inthe program is by this significantly reduced compared to conventionalrobot programming.

The second graphical user interface (the second wizard) can also handlecommunication and interaction with other cloud based system, such as webservices or mobile devices. This can be used for status information andalarms to operator when the robot is operating, e.g. “Input material isempty in five minutes” or a fault has occurred.

FIG. 6a and 6b are screenshots from the first graphical user interface.FIG. 6a shows programming of an input pallet. On the left panel therobot cell and the workstations in the robot cell are shown. On theright side, the task parts building up the task to be carried out by therobot at the input palette are shown. FIG. 6b shows a drop down listwith a plurality of task parts, which can be selected for programming aworkstation.

FIGS. 7a-h shows examples of a sequence of views in a second graphicaluser interface for programming the robot. The operator starts theapplication and a start page is shown. The operator can choose betweencreating a new product or load an already existing one from file. When aproduct has been loaded, the product name is displayed together withother information for that specific product. When the operator creates anew product, an interface of the robot cell will be shown, giving theoperator the possibility to choose which stations inside the robot cellthey would want to program in order to create the product, as shown inFIG. 7a . This interface will be shown on every start of creating aproduct and in between programming each workstation. The interfacechanges automatically and adds the workstations and knows theirpositions based on the configuration done by the system integrator. Theinput palette is selected and can now be added to the sequence ofstations used to create the product.

Now the input pallet has been added to the list of stations to the left,as shown in FIG. 7b , and the first view of the user interface of thatworkstation is now shown to the right. The item with the dark backgroundis the current task part to be programmed. The list to the left acts asa tree, where every root node is a workstation and every leaf is a taskpart to be carried out inside that station. The operator will need toapprove each task part in order to complete the programming of theworkstation. The operator is programming the product by teaching (movingobjects physically or virtually) and the list of task parts to the leftacts as a guide of what order the resulting generated code will executein.

When the operator has finished programming of the first task part, hesteps to the next task part in the tree, as shown in FIG. 7c . Duringthis step the operator is given a choice, and depending on the operatoranswers, the second user interface will adjust accordingly, e.g. onestack would result in the sequence of views as shown in FIG. 7d . If theoperator instead chooses a number of four stacks, the second userinterface generates another sequence of views, shown in FIG. 7e . Eachview defines a graphical user interface (GUI).

The different views work as a guide for the operator. Depending on theneed of the task, different views are used. In FIG. 7f a simple case isshown (“GripperGrasp”), the text explains the next action, and when theoperator approves this step then the action will be executed. In thisexample, approving the step won't change the resulting generated code inany way but is required in order to grasp the physical object whileteaching and also gives the user a clue of how the robot will grasp theobject.

The programming of the input palette is now completed. When the operatoris finished with the product it can be saved by, for example pressing abutton “done”. This brings the operator back to the robot cellinterface, as shown in FIG. 7g . The next workstation can now beselected among the defined workstations in the robot cell, and the newworkstation will be added to the list of stations, as shown in FIG. 7h .After saving a product or loading it from file, the robot code isgenerated and information about the product is displayed on the startpage.

The present invention is not limited to the embodiments disclosed butmay be varied and modified within the scope of the following claims. Forexample, the steps in the method can be carried out in different order.It is also possible to build a new programming block from severalprogramming blocks. Thus, a programming block may contain a plurality ofprogramming blocks. The invention can also be used for programming morethan one robot cell. Each of the robot cells can then be defined asdescribed above.

1. A system for programming an industrial robot to perform work in arobot cell including a plurality of workstations, the system comprising:a first memory location for storing a plurality of programming blocksincluding robot code comprising program instructions for the robot tocarrying out a part of a task, and at least some of the programmingblocks comprises program code including program instructions forgenerating a graphical user interface for guiding a user to program thepart of the task, a graphical generator configured to generate a firstwizard including a first graphical user interface allowing a user todefine a plurality of workstations, to select a sequence of saidprogramming blocks for each of the defined workstations, and to define aspecific robot cell including one or more of said defined workstations,and a programming tool generator configured to generate a guiding toolfor programming the specific robot cell based on the program code of theselected sequences of programming blocks for the workstations in therobot cell, wherein the guiding tool comprises program code forgenerating a second wizard having a second graphical user interfacecomprising a sequence of views including instructions for guiding a userto program the specific robot cell, and allowing the user to select oneor more of the workstations in the specific robot cell, and to inputparameters in response to the displayed instructions.
 2. The systemaccording to claim 1, the system further comprising: a second memorylocation for storing the defined workstations and the selected sequencesof programming blocks, a program executer configured to execute theguiding tool and to display the second wizard, and a robot programgenerator configured to generate a robot program based on the robot codeof the selected sequences of programming blocks for the selectedworkstations, and the parameters input in response to the displayedinstructions.
 3. The system according to claim 1, wherein said sequenceof views of the second wizard also includes questions regarding theworkstations in the specific robot cell, and the program codes of atleast some of the programming blocks are interactive and configured toadjust said sequence of views in dependence on user input in response tothe displayed questions.
 4. The system according to claim 1, whereinsaid parameters include waypoints on movement paths for the robot. 5.The system according to claim 1, wherein the first graphical userinterface allows a user to define an entry point for each of theworkstations and to specify first movement paths for the robot betweenthe defined entry points, the second graphical user interface allows auser to specify second movement paths for the robot from the entrypoints for carrying out the tasks at the selected workstations, and therobot program generator is configured to generate the robot programbased on the specified first and second movement paths.
 6. The systemaccording to claim 1, wherein the second graphical user interface allowsthe user to specify the order in which the robot is going to visit theworkstations, and the robot program generator is configured to generatethe robot program based on the specified order for visiting theworkstations.
 7. The system according to claim 1, wherein said programcode for generating a graphical user interface comprises accommodationsfor optional text to be presented to the user, and the first graphicalinterface is configured to allow a user to input text with instructionsand questions to the user, and said programming tool generator isconfigured to fill in the text received from the user in saidaccommodations.
 8. The system according to claim 2, the system furthercomprising a first computing unit including a first display device, userinput means, and said programming tool generator, and said graphicalgenerator is configured to display the first graphical user interface onthe first display device, and a second computing unit configured toreceive the generated guiding tool, and comprising a memory location forstoring the guiding tool, a second display device, user input means,said program executer configured to execute the guiding tool to displaythe second graphical user interface on the second display device, andsaid robot program generator.
 9. A computer based method for programmingan industrial robot to perform work in a robot cell including aplurality of workstations, the method comprising: providing a pluralityof programming blocks, each of the programming blocks including robotcode comprising program instructions for the robot to carry out a partof a task, and at least some of the programming blocks include programcode comprising program instructions for generating a graphical userinterface for guiding a user to program the part of the task, generatinga first wizard including a first graphical user interface allowing auser to define a plurality of workstations and to select a sequence ofsaid programming blocks for each of the defined workstations, and todefine at least one specific robot cell including one or more of saiddefined workstations, receiving user inputs regarding selected sequencesof said programming blocks for the defined workstations, storing thedefined workstations of the specific robot cell, and generating aguiding tool for programming said at least one specific robot cell basedon the defined workstations of the specific robot cell, and the programcode in the selected sequences of programming blocks for the definedworkstations, wherein the guiding tool includes program code forgenerating a second wizard comprising a graphical user interfaceincluding a sequence of views including instructions for guiding a userto program the specific robot cell.
 10. The method according to claim 9,the method further: further comprising: executing the guiding tool,displaying the second graphical user interface allowing the user toselect one or more of the workstations in the specific robot cell, andto input parameters in response to the displayed instructions, receivinguser inputs in response to the displayed instructions, and generating arobot program based on the robot code of the selected sequences ofprogramming blocks for the selected workstations, and the received userinputs.
 11. The method according to claim 9, wherein the methodcomprises generating a graphical user interface including instructionsfor guiding a user to program the work station for each of the definedworkstations based on the program code in the selected programmingblocks, and generating said guiding tool based on the generatedgraphical user interfaces for the defined workstations of the specificrobot cell.
 12. The method according to claim 9, wherein the firstgraphical user interface is generated on a first programming unit, thesecond user interface is generated on a second programming unit, theguiding tool is generated on the first programming unit and the robotprogram is generated on the second programming unit, and the methodcomprises transferring the guiding tool and the robot code of theselected sequences of programming blocks for the workstations of thespecific robot cell from the first computing unit to the secondprogramming unit.
 13. The method according to claim 9, wherein the firstgraphical user interface allows a user to define an entry point for eachof the workstations and to specify first movement paths for the robotbetween the defined entry points, the second graphical user interfaceallows a user to specify second movement paths for the robot from theentry points for carrying out the tasks at the selected workstations,and the method comprises receiving first movement paths from a firstuser, receiving second movement paths from a second user, and generatingthe robot program based on the first and second movement paths.
 14. Themethod according to claims 9, wherein said sequence of views includesquestions regarding the workstations in the specific robot cell, and themethod comprises displaying the views with the questions, receivingresponse to the displayed questions, and adjusting the second userinterface in dependence on the response to the displayed questions. 15.A computer program directly loadable into the internal memory of thecomputer or a processor, comprising software code portions forperforming the steps of a computer based method for programming anindustrial robot to perform work in a robot cell including a pluralityof workstations when said program is running on one or more computers,the method comprising: providing a plurality of programming blocks, eachof the programming blocks including robot code comprising programinstructions for the robot to carry out a part of a task, and at leastsome of the programming blocks include program code comprising programinstructions for generating a graphical user interface for griding auser to program the part of the task, generating a first wizardincluding a first graphical user interface allowing a user to define aplurality of workstations and to select a sequence of said programmingblocks for each of the defined workstations, and to define at least onespecific rogot cell including one or more of said defined workstations,receiving user inputs regarding selected sequences of said programmingblocks for the defined workstations, storing the defined workstations ofthe specific robot cell, and generating a guiding tool for programmingsaid at least one specific robot cell based on the defined workstationsof the specific robot cell, and the program code in the selectedsequences of programming blocks for the defined workstations, whereinthe guiding tool includes program code for generating a second wizardcomprising a graphical user interface including a sequence of viewsincluding instructions for guiding a user to program the specific robotcell.
 16. A non-transitory computer readable medium having a programrecorded thereon, when the program is to make one or more computersperform the steps of a computer based method for programming anindustrial robot to perform work in a robot cell including the pluralityof workstations, said program is running on the computer, and the methodcomprising: providing a plurality of programming blocks, each of theprogramming blocks including robot code comprising program instructionsfor the robot to carry out a part of a task, and at least some of theprogramming blocks include program code comprising program instructionsfor generating a graphical user interface for guiding a user to programthe part of the task, generating a first wizard including a firstgraphical user interface allowing a user to define a plurality ofworkstations and to select a sequence of said progamming blocks for eachof the defined workstations, and to define at least one specific robotcell including one or more of said defined workstations, receiving userinputs regarding selected sequences of said programming blocks for thedefined workstations, storing the defined workstations of the specificrobot cell, and generating a guiding tool for programming said at leastone specific robot cell based on the defined workstations of thespecific robot cell, and the program code in the selected sequences ofprogramming blocks from the defined workstations, wherein the guidingtool includes program code for generating a second wizard comprising agraphical user interface including a sequence of views includinginstructions for guiding a user to program the specific robot cell.